/*
    文件内容: 封装ThreadPool相关操作,线程池
    文件名: ThreadPool.h
    作者: 中国好青年(码农论坛)
    时间: 2024/9/21
*/
#pragma once
#include <unistd.h>
#include <vector>
#include <queue>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <future>
#include <atomic>
#include <unistd.h>
#include <sys/syscall.h>   /* For SYS_xxx definitions */
#include "util.h"
/*
    类名: ThreadPool
    作用: 封装ThreadPool相关操作类,线程池
*/
class ThreadPool
{
private:
    std::vector<std::thread> threads_;
    std::queue<std::function<void()>> taskqueue_;
    std::mutex mutex_;
    std::condition_variable condition_;
    std::atomic_bool stop_;
    std::string threadtype_;
public:
    /* 构造函数 和 析构函数 */
    ThreadPool(size_t threadnum, const std::string& threadtype);
    ~ThreadPool();
    
    void stop();
    void addtask(std::function<void()> task);
    size_t size();
};